package com.fima.cardsui.objects; import java.io.Serializable; /** * A card model that represents all the basic information about a {@link Card} * (actually, it's a concrete copy of {@link AbstractCard} that's * {@link Serializable}). CardModel objects can be used to store information * about cards across configuration changes, or even saved to USB storage. * * <p> * To turn a {@link CardModel} into a Card, use {@link CardFactory}. * * @author FLamparski * @see {@link AbstractCard}, {@link CardFactory} */ public class CardModel implements Serializable { private static final long serialVersionUID = 0xDEADBEEFl; protected int image; protected String description, color, titleColor, desc, title, titlePlay; protected Boolean hasOverflow, isClickable; protected int imageRes; protected Class<? extends AbstractCard> cardClass; protected Object data; /** * A very minimal and customizable constructor * * @param cardClass */ public CardModel(Class<? extends AbstractCard> cardClass) { this.cardClass = cardClass; } /** * For basic cards * * @param description * @param title */ public CardModel(String description, String title, Class<? extends AbstractCard> cardClass) { this.description = description; this.desc = description; this.title = title; this.cardClass = cardClass; } /** * For basic cards w/ data * * @param description * @param title * @param data */ public CardModel(String description, String title, Object data, Class<? extends AbstractCard> cardClass) { this.description = description; this.desc = description; this.title = title; this.data = data; this.cardClass = cardClass; } /** * For Play cards * * @param titlePlay * @param description * @param color * @param titleColor * @param hasOverflow * @param isClickable */ public CardModel(String titlePlay, String description, String color, String titleColor, Boolean hasOverflow, Boolean isClickable, Class<? extends AbstractCard> cardClass) { this.titlePlay = titlePlay; this.description = description; this.color = color; this.titleColor = titleColor; this.hasOverflow = hasOverflow; this.isClickable = isClickable; this.cardClass = cardClass; } /** * For Play cards w/ data * * @param titlePlay * @param description * @param color * @param titleColor * @param hasOverflow * @param isClickable * @param data */ public CardModel(String titlePlay, String description, String color, String titleColor, Boolean hasOverflow, Boolean isClickable, Object data, Class<? extends AbstractCard> cardClass) { this.titlePlay = titlePlay; this.description = description; this.color = color; this.titleColor = titleColor; this.hasOverflow = hasOverflow; this.isClickable = isClickable; this.data = data; this.cardClass = cardClass; } /** * The full monty constructor. * * @param image * @param description * @param color * @param titleColor * @param desc * @param title * @param titlePlay * @param hasOverflow * @param isClickable * @param imageRes * @param cardClass * @param data */ public CardModel(int image, String description, String color, String titleColor, String desc, String title, String titlePlay, Boolean hasOverflow, Boolean isClickable, int imageRes, Class<? extends AbstractCard> cardClass, Object data) { this.image = image; this.description = description; this.color = color; this.titleColor = titleColor; this.desc = desc; this.title = title; this.titlePlay = titlePlay; this.hasOverflow = hasOverflow; this.isClickable = isClickable; this.imageRes = imageRes; this.cardClass = cardClass; this.data = data; } public String getColor() { return color; } /** * @return Arbitrary data associated with this card model */ public Object getData() { return data; } public String getDesc() { return desc; } public String getDescription() { return description; } public Boolean getHasOverflow() { return hasOverflow; } public int getImage() { return image; } public int getImageRes() { return imageRes; } public Boolean getIsClickable() { return isClickable; } public String getTitle() { return title; } public String getTitleColor() { return titleColor; } public String getTitlePlay() { return titlePlay; } /** * @return the card's type */ public Class<? extends AbstractCard> getType() { return cardClass; } /** * @param color * the color to set */ public void setColor(String color) { this.color = color; } /** * @param Arbitrary * data associated with this card model (POJOs plx, no context * leaks) */ public void setData(Object data) { this.data = data; } /** * @param desc * the desc to set */ public void setDesc(String desc) { this.desc = desc; } /** * @param description * the description to set */ public void setDescription(String description) { this.description = description; } /** * @param hasOverflow * the hasOverflow to set */ public void setHasOverflow(Boolean hasOverflow) { this.hasOverflow = hasOverflow; } /** * @param image * the image to set */ public void setImage(int image) { this.image = image; } /** * @param imageRes * the imageRes to set */ public void setImageRes(int imageRes) { this.imageRes = imageRes; } /** * @param isClickable * the isClickable to set */ public void setIsClickable(Boolean isClickable) { this.isClickable = isClickable; } /** * @param title * the title to set */ public void setTitle(String title) { this.title = title; } /** * @param titleColor * the titleColor to set */ public void setTitleColor(String titleColor) { this.titleColor = titleColor; } /** * @param titlePlay * the titlePlay to set */ public void setTitlePlay(String titlePlay) { this.titlePlay = titlePlay; } /** * @param type * the type to set */ public void setType(Class<? extends AbstractCard> type) { this.cardClass = type; } }